// 用JS实现一个可用于浮点计算（避免浮点精度问题）
/**
 * a,b 为浮点数
 */
function add(a, b) {
  const num = Math.max(getNum(a), getNum(b))  
  const addNum = Math.pow(10, num)
    // 实现代码
    return (a * addNum + b * addNum) / addNum
  }
  const getNum = (num) => {
    const str = String(num)
    const index = str.indexOf(str)
    return index === -1 ? 0 : str.length - index - 1
    }
  console.log(add(0.1, 0.2)) // 输出：0.3

  console.log(add(0.99, 0.999)) // 输出：1.989

  console.log(add(1.01, 1.1)) // 输出：2.11

  console.log(add(0.0009, 0.000001)) // 输出：0.000901

// 实现一个转换函数，将任意使用下划线命名字符串转换为驼峰命名
/**
 * target 为输入对象
 */
// function hump ( target) {
//     // 实现代码 ......
//     const toUpperCase = target.split('_')[0] + target.split('_').slice(1).reduce((p, c) => {
//       const toUpper =  c.charAt(0).toLocaleUpperCase() + c.slice(1)
//       return p + toUpper
//     }, '')
//     return toUpperCase
//   } 

//   // 输入

//   console.log(hump('people_first_name'))
// 输出： peopleFirstName
// 实现一个转换函数，将任意对象里使用下划线命名的属性名称转换为驼峰命名
/**
 * target 为输入对象
 */
// function hump (target) {
//   // 实现代码 ......
// }

// // 输入
// const peo = {
// people_name: {
//   alex_king: 'big_boy',
//   fiona: 'little_girl'
// }
// }

// hump(peo)

// 输出，只针对属性名称进行处理就可以，不需要处理属性值（比如样例中的 little_girl）
// {
//   peopleName: {
//     alexKing: 'big_boy',
//     fiona: 'little_girl'
//   }
// }


















// 实现一个转换函数，将任意对象里使用下划线命名的属性名称转换为驼峰命名
/**
 * target 为输入对象
 */
// function hump(target) {
//   // 实现代码 ......
//   if (typeof target !== 'object' || target === null )  return target
//   if (Array.isArray(target)) return target.map(hump) 

//   const targetCaseObj = {}

//   for (const key in target) {
//     // eslint-disable-next-line no-prototype-builtins
//     if (target.hasOwnProperty(key)) {
//       const targetCaseKey = key.replace(/([a-z])_([a-z])/g, cas => cas.toUpperCase().replace('_', ''))
//       targetCaseObj[targetCaseKey] = hump(target[key])
//     }
//   }
// return targetCaseObj

// }

// // 输入
// const peo = {
//   people_name: {
//     alex_king: 'big_boy',
//     fiona: 'little_girl'
//   }
// }

// console.log(hump(peo));

// 输出，只针对属性名称进行处理就可以，不需要处理属性值（比如样例中的 little_girl）
// {
//   peopleName: {
//     alexKing: 'big_boy',
//     fiona: 'little_girl'
//   }
// }